const { join } = require('path')
// 创建路由器中间件
const express = require('express')
// 引入model
const model = require('./db/model')
// 得到路由器中间件
const router = express.Router()

// 登录
router.post('/login', async (req, res) => {
  // 1. 获取用户上传的用户名和密码
  const { username, password } = req.body
  // 2. 去数据库中查询是否用指定的用户名和密码
  try {
    const user = await model.findOne({ username, password })
    // 3. 响应用户
    if (user) {
      // 找到数据了,表示登录成功
      // res.send('登录成功')
      //重定向到首页
      // res.redirect('http://localhost:5000/index.html')
      // 登录成功了,再响应头中添加属性set-cookie: 键 = 值
      // res.cookie('userId', user._id, { maxAge: 1000 * 60 * 60 })
      // 下面req.session.userId的作用: 1. 开启session空间,将用户的id存储到了session空间中
      // 2. 会自动设置响应头,将sessionId设置到响应头中让浏览器存储到cookie中
      req.session.userId = user._id
      res.render('index', user)
    } else {
      // 没找到,表示登录失败
      res.send('用户名或密码错误')
    }
  } catch (error) {
    res.send('网络错误,请稍后再试')
  }
})

// 注册
router.post('/registe', async (req, res) => {
  // 1. 获取客户端上传上来的用户信息
  const { username, password } = req.body
  // 2. 将用户的信息存储到数据库中
  try {
    await model.create({ username, password })
    // 3. 响应用户
    // res.send('注册成功')
    res.redirect('http://localhost:5000/login.html')
  } catch (error) {
    res.send('网络问题请稍后再试')
  }
})

// 响应详情页的路由
router.get('/detail', (req, res) => {
  // if (req.cookies.userId) { // 只使用了cookie
  //cookie和session配合使用
  // req.session.userId的作用: 1. 会自动从请求头中找到cookie信息 2. 根据cookie上传的sessionId自动找到那块session空间 3.去session空间中找userId
  if (req.session.userId) {
    // 之前登陆过,并且登录有效,则响应detail页面
    res.sendFile(join(__dirname, 'templates', 'detail.html'))
  } else {
    res.redirect('http://localhost:5000/login.html')
  }
})

// 响应登录页面
// router.get('/login', (req, res) => {
//   // 响应login.html页面,并且要让这个页面直接在浏览器端渲染
//   res.sendFile(join(__dirname, 'view', 'login.html'))
// })

// // 响应注册页面
// router.get('/registe', (req, res) => {
//   // 响应registe.html页面,并且要让这个页面直接在浏览器端渲染
//   res.sendFile(join(__dirname, 'view', 'registe.html'))
// })

// // 响应index.css的路由
// router.get('/index.css', (req, res) => {
//   res.sendFile(join(__dirname, 'view', 'index.css'))
// })

// 导出路由器中间件
module.exports = router
